package com.kaifamiao.dao;

import com.kaifamiao.model.QueryVo;
import com.kaifamiao.model.UserInfoModel;

import java.util.List;

/**
 * 持久层接口
 */
public interface IUserInfoMapper {

    /**
     * 查询所有记录
     * @return
     */
    List<UserInfoModel> findAll();

    /**
     * 分页查询
     * @param userInfoModel
     * @return
     */
    List<UserInfoModel> findAll2(UserInfoModel userInfoModel);

    /**
     * 根据 id 查询一条记录
     * @param id
     * @return
     */
    UserInfoModel findById(String id);

    /**
     * 在 mapper 映射器文件中用 动态 sql 标签
     * 能够灵活查询
     * @param userInfoModel
     * @return
     */
    List<UserInfoModel> findByUser(UserInfoModel userInfoModel);

    /**
     * 保存一条记录
     * @param userInfoModel
     * @return
     */
    int saveUser(UserInfoModel userInfoModel);

    /**
     * id 不用自己设置，获取 uuid 并存入
     * @param userInfoModel
     * @return
     */
    int saveWithUuid(UserInfoModel userInfoModel);

    /**
     * 根据 id 修改一条记录
     * @param userInfoModel
     * @return
     */
    int updateById(UserInfoModel userInfoModel);

    /**
     * 删除一条数据(物理删除)
     * @param id
     * @return
     */
    int deleteById(String id);

    /**
     * 删除一条数据 （逻辑删除）
     * @param id
     * @return
     */
    int deleteByIdLogic(String id);

    /**
     * 根据名称模糊查询
     * @param userName
     * @return
     */
    List<UserInfoModel> findByUserName(String userName);

    /**
     * 查询总记录条数
     * @return
     */
    int findTotal();

    /**
     * 传递一个 pojo 包装对象
     * @param queryVo
     * @return
     */
    UserInfoModel findByVo(QueryVo queryVo);

    /**
     * 删除一组数据
     * @param ids
     * @return
     */
    int deleteByIds(String... ids);

}
